Paths<R>
recordを引数にとって、アクセスできるfieldの一覧を返す
どこまで仕様に含めるか?
{a: b: {..}}の時に、'a' | 'a.b'とするか、'b'(葉のみ)とするか
arrayを含んでいる場合にどうするか
簡易版の定義
code:ts
type Paths<R> = {
type StrJoin<K extends string | number, V>
= V extends object ? ${K}.${Paths<V>}
: ${K};
相互再帰をしているmrsekut.icon
使用例
code:test.ts
type Sut = Paths<ConfigType>; // 'piyo' | 'hoge.poyo.foo' | 'hoge.fuga'
type ConfigType = {
piyo: string;
hoge: {
fuga: number;
poyo: {
foo: boolean;
};
};
};
もうちょい厳密なやつ